const router = require('@koa/router')();
const jwt = require('../utils/jwt.js')

const {userLogin,userQuery,userRegister} = require('../controller/index.js')
//路由前缀
router.prefix('/user');

router.post('/login',async (ctx) => {
    //从请求体中解析出前端传递的数据 但是koa原生不能读懂请求体的参数
    const requestBody = ctx.request.body;
    // console.log(requestBody);
    const {username,password} = requestBody;
    try{
        //后端查数据库
        const result = await userLogin(username,password);
        if(result.length) {
            //找到了
            const data = {
                id : result[0].id,
                nickname : result[0].nickname,
                username : result[0].username
            }

            const token = jwt.sign(data);

            ctx.body = {
                data,
                code : '800',
                msg : '登录成功',
                //加密的字符串
                token 
            }
            return ;
        }else{//逻辑性错误
            ctx.body = {
                data : 'faild',
                code : '804',
                msg : '用户名或密码错误'
            }
            return ;
        }
    } catch(error){
        ctx.body = {
            code : '805',
            data : error,
            msg : '服务器异常'
        }
    }
})


router.post('/register',async (ctx) => {
    //从请求体中解析出前端传递的数据 但是koa原生不能读懂请求体的参数
    const requestBody = ctx.request.body;
    const {nickname,username,password} = requestBody;
    if(!nickname || !username || !password){
        ctx.body = {
            code : '801',
            msg : '信息不全，注册失败'
        }
        return ;
    }
    try{
        //先判断用户名是否已经存在
        const queryRes = await userQuery(username);
        //后端查数据库
        if(queryRes.length) {
            //账号重复
            ctx.body = {
                code : '803',
                data : 'error',
                msg : '账号已存在',
                //加密的字符串
            }
            return;
        }
            const res = await userRegister({nickname,username,password});
            if(res.affectedRows){
                ctx.body = {
                    code : '800',
                    data : 'success',
                    msg : '注册成功'
                }
            }else{
                ctx.body = {
                    code : '804',
                    data : 'failed',
                    msg : '注册失败'
                }
            }
        
    } catch(error){
        ctx.body = {
            code : '805',
            data : error,
            msg : '服务器异常'
        }
    }
})

module.exports = router
